#ifndef SCRUB_HPP
#define SCRUB_HPP

#include "simscrub.hpp"
#include "cell.hpp"
#include <NTL/GF2.h>
#include <NTL/mat_GF2.h>
#include <NTL/vec_GF2.h>

NTL_CLIENT


namespace Algorithms{
#ifndef PR1
  void multiphase_scrubbing_ldpc(const vec_GF2&, const mat_GF2& H, const mat_GF2& H2, const mat_GF2& G2);
#else
  void multiphase_scrubbing_ldpc(const vec_GF2&, const mat_GF2& H);
#endif
  void naive_scrubbing_ldpc(const vec_GF2&, const mat_GF2& H);
  void static_sensing_ldpc(const vec_GF2&, const mat_GF2& H);

  void multiphase_scrubbing_bch(const vec_GF2& codeword, const mat_GF2& H2, const mat_GF2& G2);
  void naive_scrubbing_bch(const vec_GF2& codeword);
}


#endif //SCRUB_HPP
